import { defineStore } from 'pinia';
import { loginApi } from '../api/user';

export const useUserStore = defineStore("user", {
    state: () => ({
        token: sessionStorage.getItem('token') || null,
        roles: sessionStorage.getItem('roles') ? JSON.parse(sessionStorage.getItem('roles')) : [],
        username: sessionStorage.getItem("username") || "",
        menu: sessionStorage.getItem("menu") ? JSON.parse(sessionStorage.getItem("menu")) : [],
    }),
    actions: {
        async login(data) {
            try {
                const res = await loginApi(data);
                console.log("res", res);

                const {  roles, username} = res.data.user;
                const { token, menulist } = res.data;
                console.log("res.data",res.data);
                
                console.log("roles", roles, "username",username,"menulist",menulist);
                this.token = token;
                this.roles = roles;
                this.menu = menulist;
                this.username = username;
                // 既存到 pinia 中又存到本地存储中是因为第一 pinia 中数据是响应式第二存取速度要比本地存储快
                sessionStorage.setItem("token", token);
                sessionStorage.setItem("roles", JSON.stringify(roles));
                sessionStorage.setItem("username", username);
                sessionStorage.setItem("menu", JSON.stringify(menulist));
            } catch (error) {
                console.log("登录失败:", error);
                // 这里可以处理错误，比如显示提示信息
            }
        },

        logout() {
            // 清除组件或 store 中的状态
            this.token = null;
            this.roles = [];
            this.username = "";
            this.menu = [];

            // 清除 sessionStorage 中的所有数据
            sessionStorage.clear();

            // 可选：重置 Vue Router 的导航守卫（如果有的话）
            // this.$router.beforeEach((to, from, next) => {
            //     // 可以在这里添加逻辑来检查用户是否已登录
            //     next();
            // });

            // 可选：跳转到登录页面
            // this.$router.push('/login');
        }
    },
});

